// 导入封装的请求工具
import http from '../../utils/https.js';
import uploadUtil from '../../utils/upload.js';

// pages/complete/complete.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    loading: false,
    userId: '',
    selectedRelationName: '', // 选中的与业主关系名称
    selectedIdCardTypeName: '', // 选中的证件类型名称
    formData: {
      residentName: '',
      gender: 0, // 默认选择男性
      idNumber: '',
      phoneNumber: '',
      wechatId: '',
      auditStatus: '1', // 审核状态默认审核中
      idFrontPhoto: '', // 证件正面照
      idBackPhoto: '', // 证件背面照
      relationToOwnerId: '', // 与业主的关系id
      relationToOwnerIndex: 0, // 与业主的关系选择索引
      idCardTypeId: '', // 证件类型id
      idCardTypeIndex: 0, // 证件类型选择索引
      commitTime: '' // 提交信息时间
    },
    ownerRelations: [], // 与业主的关系列表
    idCardTypes: [] // 证件类型列表
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // 获取全局应用实例
    const app = getApp();
    // 获取与业主的关系列表
    this.getOwnerRelations();
    // 获取证件类型列表
    this.getIdCardTypes();
    // 获取userId
    const userId = app.globalData.userInfo?.userId || wx.getStorageSync('userInfo')?.userId;
    this.setData({
      userId: userId
    });
    
    // 测试上传功能
    this.testUpload();
  },

  /**
   * 获取与业主的关系列表
   */
  getOwnerRelations: function() {
    http.get('ownerRelation/ownerRelation/list')
      .then(res => {
        this.setData({
          ownerRelations: res.rows || []
        });
      })
      .catch(err => {
        console.error('获取与业主的关系列表失败:', err);
        wx.showToast({
          title: '获取数据失败',
          icon: 'error'
        });
      });
  },

  /**
   * 获取证件类型列表
   */
  getIdCardTypes: function() {
    http.get('idCardType/idCardType/list')
      .then(res => {
        this.setData({
          idCardTypes: res.rows || []
        });
      })
      .catch(err => {
        console.error('获取证件类型列表失败:', err);
        wx.showToast({
          title: '获取数据失败',
          icon: 'error'
        });
      });
  },

  /**
   * 性别选择改变事件
   */
  genderChange: function(e) {
    this.setData({
      'formData.gender': e.detail.value
    });
  },

  /**
   * 与业主关系选择改变事件
   */
  relationChange: function(e) {
    const index = e.detail.value;
    const relation = this.data.ownerRelations[index] || {};
    this.setData({
      'formData.relationToOwnerIndex': index,
      'formData.relationToOwnerId': relation.id || '',
      selectedRelationName: relation.relationName || ''
    });
  },

  /**
   * 证件类型选择改变事件
   */
  idCardTypeChange: function(e) {
    const index = e.detail.value;
    const cardType = this.data.idCardTypes[index] || {};
    this.setData({
      'formData.idCardTypeIndex': index,
      'formData.idCardTypeId': cardType.id || '',
      selectedIdCardTypeName: cardType.typeName || ''
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    // 确保页面显示时如果已有选中值，能正确显示名称
    if (this.data.formData.relationToOwnerId && this.data.ownerRelations.length > 0) {
      const relation = this.data.ownerRelations.find(item => item.id === this.data.formData.relationToOwnerId);
      if (relation) {
        this.setData({
          selectedRelationName: relation.relationName,
          'formData.relationToOwnerIndex': this.data.ownerRelations.indexOf(relation)
        });
      }
    }

    if (this.data.formData.idCardTypeId && this.data.idCardTypes.length > 0) {
      const cardType = this.data.idCardTypes.find(item => item.id === this.data.formData.idCardTypeId);
      if (cardType) {
        this.setData({
          selectedIdCardTypeName: cardType.typeName,
          'formData.idCardTypeIndex': this.data.idCardTypes.indexOf(cardType)
        });
      }
    }
  },

  /**
   * 上传证件正面照
   */
  uploadIdFrontPhoto: function() {
    this.uploadPhoto('idFrontPhoto');
  },

  /**
   * 上传证件背面照
   */
  uploadIdBackPhoto: function() {
    this.uploadPhoto('idBackPhoto');
  },

  /**
   * 通用图片上传函数
   */
  uploadPhoto: function(fieldName) {
    const that = this;
    
    console.log('开始上传图片，字段名:', fieldName);
    
    // 检查token
    const token = wx.getStorageSync('token');
    console.log('当前token:', token ? '存在' : '不存在');
    
    // 选择图片
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        const tempFilePath = res.tempFilePaths[0];
        console.log('选择的图片路径:', tempFilePath);
        
        wx.showLoading({
          title: '上传中...',
        });
        
        // 直接使用简化上传方案
        uploadUtil.simpleUpload(tempFilePath)
          .then(imagePath => {
            console.log('上传成功，图片路径:', imagePath);
            console.log('图片路径类型:', typeof imagePath);
            console.log('图片路径长度:', imagePath ? imagePath.length : 0);
            
            wx.hideLoading();
            that.setData({
              [`formData.${fieldName}`]: imagePath
            });
            
            // 添加调试信息
            console.log('设置后的formData:', that.data.formData);
            console.log('设置后的图片字段:', that.data.formData[fieldName]);
            
            wx.showToast({
              title: '上传成功',
              icon: 'success'
            });
          })
          .catch(error => {
            console.error('上传失败:', error);
            wx.hideLoading();
            wx.showToast({
              title: error.message || '上传失败，请重试',
              icon: 'error'
            });
            
            // 如果是token相关错误，提示用户重新登录
            if (error.message && error.message.includes('登录')) {
              wx.showModal({
                title: '提示',
                content: '登录状态异常，是否重新登录？',
                success: function(res) {
                  if (res.confirm) {
                    wx.navigateTo({
                      url: '/pages/login/login'
                    });
                  }
                }
              });
            }
          });
      },
      fail(err) {
        console.error('选择图片失败:', err);
        if (err.errMsg && err.errMsg.includes('cancel')) {
          // 用户取消选择，不显示错误提示
        } else {
          wx.showToast({
            title: '选择图片失败',
            icon: 'error'
          });
        }
      }
    });
  },

  /**
   * 测试上传功能
   */
  testUpload: function() {
    console.log('=== 开始测试上传功能 ===');
    
    // 检查网络状态
    wx.getNetworkType({
      success: function(res) {
        console.log('网络类型:', res.networkType);
      }
    });
    
    // 检查token
    const token = wx.getStorageSync('token');
    console.log('Token状态:', token ? '存在' : '不存在');
    if (token) {
      console.log('Token长度:', token.length);
    }
    
    // 检查用户信息
    const userInfo = wx.getStorageSync('userInfo');
    console.log('用户信息:', userInfo);
    
    // 测试API连接
    const baseURL = 'http://localhost:8080/';
    console.log('API地址:', baseURL);
    
    wx.request({
      url: baseURL + 'common/upload',
      method: 'GET',
      success: function(res) {
        console.log('API连接测试成功:', res);
      },
      fail: function(err) {
        console.log('API连接测试失败:', err);
      }
    });
  },

  /**
   * 表单提交事件
   */
  submitForm: function(e) {
    const formData = e.detail.value;
    // 合并表单数据和图片等其他数据
    const submitData = {
      ...this.data.formData,
      ...formData,
      // 添加userId字段
      userId: this.data.userId
    };

    // 表单验证
    if (!submitData.residentName.trim()) {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      });
      return;
    }

    if (!submitData.idNumber.trim()) {
      wx.showToast({
        title: '请输入身份证号',
        icon: 'none'
      });
      return;
    }

    // 简单的身份证号格式验证（18位）
    if (!/^\d{17}[\dX]$/.test(submitData.idNumber)) {
      wx.showToast({
        title: '身份证号格式不正确',
        icon: 'none'
      });
      return;
    }

    if (!submitData.phoneNumber.trim()) {
      wx.showToast({
        title: '请输入电话号码',
        icon: 'none'
      });
      return;
    }

    // 简单的手机号格式验证
    if (!/^1\d{10}$/.test(submitData.phoneNumber)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      });
      return;
    }

    // 验证证件照片 - 修改为可选
    if (!submitData.idFrontPhoto || !submitData.idBackPhoto) {
    // 显示警告而非错误提示，不阻止表单提交
    wx.showToast({
    title: '提示：证件照片未上传',
    icon: 'none',
    duration: 2000
    });
    // 不使用return，允许继续提交
    }

    // 验证与业主关系
    if (!submitData.relationToOwnerId) {
      wx.showToast({
        title: '请选择与业主的关系',
        icon: 'none'
      });
      return;
    }

    // 验证证件类型
    if (!submitData.idCardTypeId) {
      wx.showToast({
        title: '请选择证件类型',
        icon: 'none'
      });
      return;
    }

    // 设置当前时间为提交时间
    const now = new Date();
    const commitTime = now.toISOString().slice(0, 19).replace('T', ' ');
    submitData.commitTime = commitTime;

    // 显示加载状态
    this.setData({
      loading: true
    });

    // 调用后端接口保存用户信息
    http.post('resident/resident', submitData)
      .then(res => {
        this.setData({
          loading: false
        });
        if (res.code === 200) {
          wx.showToast({
            title: '信息提交成功',
            icon: 'success'
          });
          // 跳转到首页或其他页面
          setTimeout(() => {
            wx.switchTab({
              url: '/pages/index/index'
            });
          }, 1500);
        } else {
          wx.showToast({
            title: res.msg || '提交失败',
            icon: 'error'
          });
        }
      })
      .catch(err => {
        this.setData({
          loading: false
        });
        console.error('提交失败:', err);
        wx.showToast({
          title: '提交失败',
          icon: 'error'
        });
      });
  },
  /**
 * 删除证件正面照
 */
deleteIdFrontPhoto: function() {
  this.setData({
    'formData.idFrontPhoto': ''
  });
},

/**
 * 删除证件背面照
 */
deleteIdBackPhoto: function() {
  this.setData({
    'formData.idBackPhoto': ''
  });
}
});


